package object;

/**
 * 属性注意事项
 */
public class PropertiesDetail {

    public static void main(String[] args) {

        /*
            1)属性的定义语法同变量，如：访问修饰符 属性类型 属性名;
            2)属性的定义类型可以为任意类型，包含基本类型或引用类型
            3)属性如果不赋值，有默认值
         */


        /*
            类和对象的内存分配机制
            1)栈：一般存放基本数据类型（局部变量）
            2)堆：存放对象（Cat cat,数组等）
            3)方法区：常量池（常量，比如字符串），类加载信息
         */

        //先加载Person类信息（属性和方法信息，只会加载一次）
        //在堆中分配空间，进行默认初始化
        //把地址赋给 person ，person 就指向对象
        //进行指定初始化，比如 person.name = "jack"
        Person person = new Person();
        person.name = "jack";
        person.age = 18;

        //练习
        Person a = new Person();
        a.age = 10;
        a.name = "小明";
        Person b;
        b = a;
        System.out.println(b.name);//小明
        b.age = 200;
        b = null;
        System.out.println(a.age);//200
        System.out.println(b.age);//异常，因为b指向空
    }
}

class Person {

    //四个属性
    int age;

    String name;

    double sal;

    boolean isPass;

}
